﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Serialization;

namespace TP2.Lib
{
    // [XmlInclude(typeof(LanzaLaser))]
     [Serializable]
    public class LanzaLaser : Arma
    {
        const int CANT_MUNICIONES_LANZA_LASER = 1,
                  VIDA_LANZA_LASER = 1,
                  LASER_MULTIPLICADOR_MINIMO = 1,
                  LASER_MULTIPLICADOR_MAXIMO = 4;

        #region /*---------------- Propiedades ---------------*/

        private int _multiplicador;
        public int Multiplicador
        {
            get { return this._multiplicador; }
        }

        public void SetMultiplicador(int multiplicador)
        {
            int temp;
            temp = Math.Abs(multiplicador);
            if (temp <= LASER_MULTIPLICADOR_MAXIMO) 
            {
                this._multiplicador = multiplicador;
            }
            else
            {
                this._multiplicador = LASER_MULTIPLICADOR_MAXIMO;
            }            
        }

        #endregion

        private LanzaLaser() { } /*Contructor vacio, lo utiliza la serialización*/

        public LanzaLaser(double[] posicion, int[] dimensiones)
            : base(posicion, dimensiones)
        {
            this.Dimensiones = dimensiones;
            this.Vida = VIDA_LANZA_LASER;
            this.Municiones = CANT_MUNICIONES_LANZA_LASER;
            this.SetMultiplicador(LASER_MULTIPLICADOR_MINIMO);
            this.Radio = 0;
            this.Rapidez = 0;
            this.Recorrido = null;
        }

        public override void IncrementarArma() //override de quien??
        {
            //Aumenta Multiplicador para luego aumentar el Danio
            int temp;
            temp = this.Multiplicador +  1;
            this.SetMultiplicador(temp);
        }
        
        public override Proyectil  Disparar(double[] desde, double[] hasta)
        {
            //Console.WriteLine("Disparo de Laser!");
            Laser proyectilLaser = new Laser(desde,hasta, this.Dimensiones);
            proyectilLaser.Danio = proyectilLaser.Danio * this.Multiplicador;
            return (proyectilLaser);
        }

        public override Proyectil Actuar()
        {
            //No se mueve
            return (null);
        }
               
    }
}
